[404218]: / Code / Tensor Network vs FC Explainability / Dataset 4 / DS4 6FC TPU kkawchak.ipynb

Download this file

1274 lines (1274 with data), 152.9 kB

{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "machine_shape": "hm",
      "gpuType": "V28"
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "accelerator": "TPU"
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "8XnVMPBXmtRa"
      },
      "source": [
        "# TensorNetworks in Neural Networks.\n",
        "\n",
        "Here, we have a small toy example of how to use a TN inside of a fully connected neural network.\n",
        "\n",
        "First off, let's install tensornetwork"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "7HGRsYNAFxME"
      },
      "source": [
        "# !pip install tensornetwork\n",
        "\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "import tensorflow as tf\n",
        "# Import tensornetwork\n",
        "import tensornetwork as tn\n",
        "import random\n",
        "import time\n",
        "import pandas as pd\n",
        "# Set the backend to tesorflow\n",
        "# (default is numpy)\n",
        "tn.set_default_backend(\"tensorflow\")\n",
        "np.random.seed(42)\n",
        "random.seed(42)\n",
        "tf.random.set_seed(42)\n",
        "# Explainability code assistance aided by ChatGPT3.5\n",
        "# 2021 Kelly, D. TensorFlow Explainable AI tutorial https://www.youtube.com/watch?v=6xePkn3-LME"
      ],
      "execution_count": 57,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "g1OMCo5XmrYu"
      },
      "source": [
        "# TensorNetwork layer definition\n",
        "\n",
        "Here, we define the TensorNetwork layer we wish to use to replace the fully connected layer. Here, we simply use a 2 node Matrix Product Operator network to replace the normal dense weight matrix.\n",
        "\n",
        "We TensorNetwork's NCon API to keep the code short."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "wvSMKtPufnLp"
      },
      "source": [
        "class TNLayer(tf.keras.layers.Layer):\n",
        "\n",
        "  def __init__(self):\n",
        "    super(TNLayer, self).__init__()\n",
        "    # Create the variables for the layer.\n",
        "    self.a_var = tf.Variable(tf.random.normal(shape=(32, 32, 2),\n",
        "                                              stddev=1.0/32.0),\n",
        "                             name=\"a\", trainable=True)\n",
        "    self.b_var = tf.Variable(tf.random.normal(shape=(32, 32, 2),\n",
        "                                              stddev=1.0/32.0),\n",
        "                             name=\"b\", trainable=True)\n",
        "    self.bias = tf.Variable(tf.zeros(shape=(32, 32)),\n",
        "                            name=\"bias\", trainable=True)\n",
        "\n",
        "  def call(self, inputs):\n",
        "    # Define the contraction.\n",
        "    # We break it out so we can parallelize a batch using\n",
        "    # tf.vectorized_map (see below).\n",
        "    def f(input_vec, a_var, b_var, bias_var):\n",
        "      # Reshape to a matrix instead of a vector.\n",
        "      input_vec = tf.reshape(input_vec, (32, 32))\n",
        "\n",
        "      # Now we create the network.\n",
        "      a = tn.Node(a_var)\n",
        "      b = tn.Node(b_var)\n",
        "      x_node = tn.Node(input_vec)\n",
        "      a[1] ^ x_node[0]\n",
        "      b[1] ^ x_node[1]\n",
        "      a[2] ^ b[2]\n",
        "\n",
        "      # The TN should now look like this\n",
        "      #   |     |\n",
        "      #   a --- b\n",
        "      #    \\   /\n",
        "      #      x\n",
        "\n",
        "      # Now we begin the contraction.\n",
        "      c = a @ x_node\n",
        "      result = (c @ b).tensor\n",
        "\n",
        "      # To make the code shorter, we also could've used Ncon.\n",
        "      # The above few lines of code is the same as this:\n",
        "      # result = tn.ncon([x, a_var, b_var], [[1, 2], [-1, 1, 3], [-2, 2, 3]])\n",
        "\n",
        "      # Finally, add bias.\n",
        "      return result + bias_var\n",
        "\n",
        "    # To deal with a batch of items, we can use the tf.vectorized_map\n",
        "    # function.\n",
        "    # https://www.tensorflow.org/api_docs/python/tf/vectorized_map\n",
        "    result = tf.vectorized_map(\n",
        "        lambda vec: f(vec, self.a_var, self.b_var, self.bias), inputs)\n",
        "    return tf.nn.relu(tf.reshape(result, (-1, 1024)))"
      ],
      "execution_count": 58,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "V-CVqIhPnhY_"
      },
      "source": [
        "# Smaller model\n",
        "These two models are effectively the same, but notice how the TN layer has nearly 10x fewer parameters."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "bbKsmK8wIFTp",
        "outputId": "70324091-90d7-4262-b3cf-3de792fcc1ca",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        }
      },
      "source": [
        "Dense = tf.keras.layers.Dense\n",
        "tn_model = tf.keras.Sequential(\n",
        "    [\n",
        "     tf.keras.Input(shape=(2,)),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     # Start Modified Layers\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     # Finish Modified Layers\n",
        "     Dense(1, activation=None)])\n",
        "tn_model.summary()"
      ],
      "execution_count": 59,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Model: \"sequential_5\"\n",
            "_________________________________________________________________\n",
            " Layer (type)                Output Shape              Param #   \n",
            "=================================================================\n",
            " dense_40 (Dense)            (None, 1024)              3072      \n",
            "                                                                 \n",
            " dense_41 (Dense)            (None, 1024)              1049600   \n",
            "                                                                 \n",
            " dense_42 (Dense)            (None, 1024)              1049600   \n",
            "                                                                 \n",
            " dense_43 (Dense)            (None, 1024)              1049600   \n",
            "                                                                 \n",
            " dense_44 (Dense)            (None, 1024)              1049600   \n",
            "                                                                 \n",
            " dense_45 (Dense)            (None, 1024)              1049600   \n",
            "                                                                 \n",
            " dense_46 (Dense)            (None, 1024)              1049600   \n",
            "                                                                 \n",
            " dense_47 (Dense)            (None, 1)                 1025      \n",
            "                                                                 \n",
            "=================================================================\n",
            "Total params: 6301697 (24.04 MB)\n",
            "Trainable params: 6301697 (24.04 MB)\n",
            "Non-trainable params: 0 (0.00 Byte)\n",
            "_________________________________________________________________\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "GWwoYp0WnsLA"
      },
      "source": [
        "# Training a model\n",
        "\n",
        "You can train the TN model just as you would a normal neural network model! Here, we give an example of how to do it in Keras."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qDFzOC7sDBJ-"
      },
      "source": [
        "# Generate points forming intersecting ellipses\n",
        "theta1 = np.linspace(0, 2*np.pi, 240)  # 480/2 = 240 points for each ellipse\n",
        "theta2 = np.linspace(0, 2*np.pi, 240)\n",
        "\n",
        "a1, b1 = 2, 1  # Parameters for ellipse 1\n",
        "a2, b2 = 1, 2  # Parameters for ellipse 2\n",
        "\n",
        "x1 = a1 * np.cos(theta1)\n",
        "y1 = b1 * np.sin(theta1)\n",
        "\n",
        "x2 = a2 * np.cos(theta2)\n",
        "y2 = b2 * np.sin(theta2)\n",
        "\n",
        "X = np.concatenate([np.column_stack((x1, y1)), np.column_stack((x2, y2))])\n",
        "Y = np.concatenate([np.ones((240)), -np.ones((240))])"
      ],
      "execution_count": 60,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since beginning of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "19TWP-1eKURB",
        "outputId": "c8dad3d3-4bfb-4dad-ff93-c2365b1488a9"
      },
      "execution_count": 61,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since beginning of run: 1712721121.4240963\n",
            "Wed Apr 10 03:52:01 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "crc0q1vbIyTj",
        "outputId": "7414683b-9215-42a6-b3b8-5c4d91088209",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        }
      },
      "source": [
        "tn_model.compile(optimizer=\"adam\", loss=\"mean_squared_error\")\n",
        "tn_model.fit(X, Y, epochs=300, verbose=2)"
      ],
      "execution_count": 62,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 1/300\n",
            "15/15 - 1s - loss: 0.8231 - 1s/epoch - 95ms/step\n",
            "Epoch 2/300\n",
            "15/15 - 0s - loss: 0.6708 - 306ms/epoch - 20ms/step\n",
            "Epoch 3/300\n",
            "15/15 - 0s - loss: 0.6274 - 298ms/epoch - 20ms/step\n",
            "Epoch 4/300\n",
            "15/15 - 0s - loss: 0.5244 - 300ms/epoch - 20ms/step\n",
            "Epoch 5/300\n",
            "15/15 - 0s - loss: 0.4783 - 292ms/epoch - 19ms/step\n",
            "Epoch 6/300\n",
            "15/15 - 0s - loss: 0.4216 - 296ms/epoch - 20ms/step\n",
            "Epoch 7/300\n",
            "15/15 - 0s - loss: 0.4071 - 290ms/epoch - 19ms/step\n",
            "Epoch 8/300\n",
            "15/15 - 0s - loss: 0.4273 - 300ms/epoch - 20ms/step\n",
            "Epoch 9/300\n",
            "15/15 - 0s - loss: 0.3198 - 294ms/epoch - 20ms/step\n",
            "Epoch 10/300\n",
            "15/15 - 0s - loss: 0.5859 - 287ms/epoch - 19ms/step\n",
            "Epoch 11/300\n",
            "15/15 - 0s - loss: 0.3898 - 292ms/epoch - 19ms/step\n",
            "Epoch 12/300\n",
            "15/15 - 0s - loss: 0.2812 - 294ms/epoch - 20ms/step\n",
            "Epoch 13/300\n",
            "15/15 - 0s - loss: 0.2726 - 293ms/epoch - 20ms/step\n",
            "Epoch 14/300\n",
            "15/15 - 0s - loss: 0.2569 - 291ms/epoch - 19ms/step\n",
            "Epoch 15/300\n",
            "15/15 - 0s - loss: 0.2139 - 290ms/epoch - 19ms/step\n",
            "Epoch 16/300\n",
            "15/15 - 0s - loss: 0.2682 - 292ms/epoch - 19ms/step\n",
            "Epoch 17/300\n",
            "15/15 - 0s - loss: 0.2181 - 296ms/epoch - 20ms/step\n",
            "Epoch 18/300\n",
            "15/15 - 0s - loss: 0.1379 - 285ms/epoch - 19ms/step\n",
            "Epoch 19/300\n",
            "15/15 - 0s - loss: 0.2223 - 292ms/epoch - 19ms/step\n",
            "Epoch 20/300\n",
            "15/15 - 0s - loss: 0.2392 - 290ms/epoch - 19ms/step\n",
            "Epoch 21/300\n",
            "15/15 - 0s - loss: 0.1976 - 294ms/epoch - 20ms/step\n",
            "Epoch 22/300\n",
            "15/15 - 0s - loss: 0.2027 - 298ms/epoch - 20ms/step\n",
            "Epoch 23/300\n",
            "15/15 - 0s - loss: 0.1342 - 290ms/epoch - 19ms/step\n",
            "Epoch 24/300\n",
            "15/15 - 0s - loss: 0.1271 - 294ms/epoch - 20ms/step\n",
            "Epoch 25/300\n",
            "15/15 - 0s - loss: 0.1549 - 284ms/epoch - 19ms/step\n",
            "Epoch 26/300\n",
            "15/15 - 0s - loss: 0.1253 - 293ms/epoch - 20ms/step\n",
            "Epoch 27/300\n",
            "15/15 - 0s - loss: 0.1539 - 283ms/epoch - 19ms/step\n",
            "Epoch 28/300\n",
            "15/15 - 0s - loss: 0.1424 - 293ms/epoch - 20ms/step\n",
            "Epoch 29/300\n",
            "15/15 - 0s - loss: 0.0899 - 288ms/epoch - 19ms/step\n",
            "Epoch 30/300\n",
            "15/15 - 0s - loss: 0.0942 - 286ms/epoch - 19ms/step\n",
            "Epoch 31/300\n",
            "15/15 - 0s - loss: 0.1599 - 291ms/epoch - 19ms/step\n",
            "Epoch 32/300\n",
            "15/15 - 0s - loss: 0.1467 - 285ms/epoch - 19ms/step\n",
            "Epoch 33/300\n",
            "15/15 - 0s - loss: 0.1104 - 289ms/epoch - 19ms/step\n",
            "Epoch 34/300\n",
            "15/15 - 0s - loss: 0.1456 - 289ms/epoch - 19ms/step\n",
            "Epoch 35/300\n",
            "15/15 - 0s - loss: 0.1407 - 284ms/epoch - 19ms/step\n",
            "Epoch 36/300\n",
            "15/15 - 0s - loss: 0.1092 - 285ms/epoch - 19ms/step\n",
            "Epoch 37/300\n",
            "15/15 - 0s - loss: 0.1133 - 285ms/epoch - 19ms/step\n",
            "Epoch 38/300\n",
            "15/15 - 0s - loss: 0.0951 - 284ms/epoch - 19ms/step\n",
            "Epoch 39/300\n",
            "15/15 - 0s - loss: 0.0741 - 289ms/epoch - 19ms/step\n",
            "Epoch 40/300\n",
            "15/15 - 0s - loss: 0.0642 - 286ms/epoch - 19ms/step\n",
            "Epoch 41/300\n",
            "15/15 - 0s - loss: 0.0850 - 283ms/epoch - 19ms/step\n",
            "Epoch 42/300\n",
            "15/15 - 0s - loss: 0.1099 - 274ms/epoch - 18ms/step\n",
            "Epoch 43/300\n",
            "15/15 - 0s - loss: 0.0988 - 287ms/epoch - 19ms/step\n",
            "Epoch 44/300\n",
            "15/15 - 0s - loss: 0.0894 - 286ms/epoch - 19ms/step\n",
            "Epoch 45/300\n",
            "15/15 - 0s - loss: 0.0857 - 290ms/epoch - 19ms/step\n",
            "Epoch 46/300\n",
            "15/15 - 0s - loss: 0.1250 - 287ms/epoch - 19ms/step\n",
            "Epoch 47/300\n",
            "15/15 - 0s - loss: 0.0678 - 297ms/epoch - 20ms/step\n",
            "Epoch 48/300\n",
            "15/15 - 0s - loss: 0.0796 - 285ms/epoch - 19ms/step\n",
            "Epoch 49/300\n",
            "15/15 - 0s - loss: 0.1872 - 280ms/epoch - 19ms/step\n",
            "Epoch 50/300\n",
            "15/15 - 0s - loss: 0.1942 - 288ms/epoch - 19ms/step\n",
            "Epoch 51/300\n",
            "15/15 - 0s - loss: 0.0901 - 290ms/epoch - 19ms/step\n",
            "Epoch 52/300\n",
            "15/15 - 0s - loss: 0.1557 - 288ms/epoch - 19ms/step\n",
            "Epoch 53/300\n",
            "15/15 - 0s - loss: 0.1684 - 286ms/epoch - 19ms/step\n",
            "Epoch 54/300\n",
            "15/15 - 0s - loss: 0.0969 - 285ms/epoch - 19ms/step\n",
            "Epoch 55/300\n",
            "15/15 - 0s - loss: 0.0675 - 279ms/epoch - 19ms/step\n",
            "Epoch 56/300\n",
            "15/15 - 0s - loss: 0.0574 - 292ms/epoch - 19ms/step\n",
            "Epoch 57/300\n",
            "15/15 - 0s - loss: 0.1316 - 281ms/epoch - 19ms/step\n",
            "Epoch 58/300\n",
            "15/15 - 0s - loss: 0.1580 - 284ms/epoch - 19ms/step\n",
            "Epoch 59/300\n",
            "15/15 - 0s - loss: 0.1276 - 279ms/epoch - 19ms/step\n",
            "Epoch 60/300\n",
            "15/15 - 0s - loss: 0.1180 - 293ms/epoch - 20ms/step\n",
            "Epoch 61/300\n",
            "15/15 - 0s - loss: 0.1108 - 298ms/epoch - 20ms/step\n",
            "Epoch 62/300\n",
            "15/15 - 0s - loss: 0.1246 - 286ms/epoch - 19ms/step\n",
            "Epoch 63/300\n",
            "15/15 - 0s - loss: 0.1259 - 287ms/epoch - 19ms/step\n",
            "Epoch 64/300\n",
            "15/15 - 0s - loss: 0.1777 - 284ms/epoch - 19ms/step\n",
            "Epoch 65/300\n",
            "15/15 - 0s - loss: 0.1306 - 286ms/epoch - 19ms/step\n",
            "Epoch 66/300\n",
            "15/15 - 0s - loss: 0.0880 - 283ms/epoch - 19ms/step\n",
            "Epoch 67/300\n",
            "15/15 - 0s - loss: 0.0903 - 280ms/epoch - 19ms/step\n",
            "Epoch 68/300\n",
            "15/15 - 0s - loss: 0.0635 - 283ms/epoch - 19ms/step\n",
            "Epoch 69/300\n",
            "15/15 - 0s - loss: 0.0521 - 285ms/epoch - 19ms/step\n",
            "Epoch 70/300\n",
            "15/15 - 0s - loss: 0.0758 - 291ms/epoch - 19ms/step\n",
            "Epoch 71/300\n",
            "15/15 - 0s - loss: 0.0753 - 285ms/epoch - 19ms/step\n",
            "Epoch 72/300\n",
            "15/15 - 0s - loss: 0.0772 - 279ms/epoch - 19ms/step\n",
            "Epoch 73/300\n",
            "15/15 - 0s - loss: 0.0938 - 287ms/epoch - 19ms/step\n",
            "Epoch 74/300\n",
            "15/15 - 0s - loss: 0.0949 - 278ms/epoch - 19ms/step\n",
            "Epoch 75/300\n",
            "15/15 - 0s - loss: 0.0854 - 288ms/epoch - 19ms/step\n",
            "Epoch 76/300\n",
            "15/15 - 0s - loss: 0.0697 - 281ms/epoch - 19ms/step\n",
            "Epoch 77/300\n",
            "15/15 - 0s - loss: 0.1093 - 280ms/epoch - 19ms/step\n",
            "Epoch 78/300\n",
            "15/15 - 0s - loss: 0.0681 - 282ms/epoch - 19ms/step\n",
            "Epoch 79/300\n",
            "15/15 - 0s - loss: 0.0867 - 284ms/epoch - 19ms/step\n",
            "Epoch 80/300\n",
            "15/15 - 0s - loss: 0.1366 - 286ms/epoch - 19ms/step\n",
            "Epoch 81/300\n",
            "15/15 - 0s - loss: 0.1831 - 284ms/epoch - 19ms/step\n",
            "Epoch 82/300\n",
            "15/15 - 0s - loss: 0.1707 - 283ms/epoch - 19ms/step\n",
            "Epoch 83/300\n",
            "15/15 - 0s - loss: 0.0997 - 285ms/epoch - 19ms/step\n",
            "Epoch 84/300\n",
            "15/15 - 0s - loss: 0.0667 - 283ms/epoch - 19ms/step\n",
            "Epoch 85/300\n",
            "15/15 - 0s - loss: 0.0547 - 290ms/epoch - 19ms/step\n",
            "Epoch 86/300\n",
            "15/15 - 0s - loss: 0.1072 - 286ms/epoch - 19ms/step\n",
            "Epoch 87/300\n",
            "15/15 - 0s - loss: 0.1364 - 290ms/epoch - 19ms/step\n",
            "Epoch 88/300\n",
            "15/15 - 0s - loss: 0.1669 - 287ms/epoch - 19ms/step\n",
            "Epoch 89/300\n",
            "15/15 - 0s - loss: 0.0779 - 286ms/epoch - 19ms/step\n",
            "Epoch 90/300\n",
            "15/15 - 0s - loss: 0.0925 - 296ms/epoch - 20ms/step\n",
            "Epoch 91/300\n",
            "15/15 - 0s - loss: 0.0785 - 293ms/epoch - 20ms/step\n",
            "Epoch 92/300\n",
            "15/15 - 0s - loss: 0.0581 - 292ms/epoch - 19ms/step\n",
            "Epoch 93/300\n",
            "15/15 - 0s - loss: 0.0452 - 294ms/epoch - 20ms/step\n",
            "Epoch 94/300\n",
            "15/15 - 0s - loss: 0.0700 - 290ms/epoch - 19ms/step\n",
            "Epoch 95/300\n",
            "15/15 - 0s - loss: 0.1309 - 292ms/epoch - 19ms/step\n",
            "Epoch 96/300\n",
            "15/15 - 0s - loss: 0.1228 - 284ms/epoch - 19ms/step\n",
            "Epoch 97/300\n",
            "15/15 - 0s - loss: 0.1061 - 290ms/epoch - 19ms/step\n",
            "Epoch 98/300\n",
            "15/15 - 0s - loss: 0.1237 - 285ms/epoch - 19ms/step\n",
            "Epoch 99/300\n",
            "15/15 - 0s - loss: 0.2862 - 288ms/epoch - 19ms/step\n",
            "Epoch 100/300\n",
            "15/15 - 0s - loss: 0.1603 - 288ms/epoch - 19ms/step\n",
            "Epoch 101/300\n",
            "15/15 - 0s - loss: 0.0956 - 292ms/epoch - 19ms/step\n",
            "Epoch 102/300\n",
            "15/15 - 0s - loss: 0.0787 - 290ms/epoch - 19ms/step\n",
            "Epoch 103/300\n",
            "15/15 - 0s - loss: 0.0492 - 288ms/epoch - 19ms/step\n",
            "Epoch 104/300\n",
            "15/15 - 0s - loss: 0.0459 - 290ms/epoch - 19ms/step\n",
            "Epoch 105/300\n",
            "15/15 - 0s - loss: 0.0724 - 293ms/epoch - 20ms/step\n",
            "Epoch 106/300\n",
            "15/15 - 0s - loss: 0.1184 - 299ms/epoch - 20ms/step\n",
            "Epoch 107/300\n",
            "15/15 - 0s - loss: 0.1015 - 286ms/epoch - 19ms/step\n",
            "Epoch 108/300\n",
            "15/15 - 0s - loss: 0.0854 - 292ms/epoch - 19ms/step\n",
            "Epoch 109/300\n",
            "15/15 - 0s - loss: 0.1073 - 297ms/epoch - 20ms/step\n",
            "Epoch 110/300\n",
            "15/15 - 0s - loss: 0.0546 - 291ms/epoch - 19ms/step\n",
            "Epoch 111/300\n",
            "15/15 - 0s - loss: 0.0853 - 292ms/epoch - 19ms/step\n",
            "Epoch 112/300\n",
            "15/15 - 0s - loss: 0.0980 - 294ms/epoch - 20ms/step\n",
            "Epoch 113/300\n",
            "15/15 - 0s - loss: 0.0619 - 294ms/epoch - 20ms/step\n",
            "Epoch 114/300\n",
            "15/15 - 0s - loss: 0.0505 - 291ms/epoch - 19ms/step\n",
            "Epoch 115/300\n",
            "15/15 - 0s - loss: 0.0889 - 288ms/epoch - 19ms/step\n",
            "Epoch 116/300\n",
            "15/15 - 0s - loss: 0.0654 - 289ms/epoch - 19ms/step\n",
            "Epoch 117/300\n",
            "15/15 - 0s - loss: 0.0584 - 304ms/epoch - 20ms/step\n",
            "Epoch 118/300\n",
            "15/15 - 0s - loss: 0.0878 - 289ms/epoch - 19ms/step\n",
            "Epoch 119/300\n",
            "15/15 - 0s - loss: 0.0752 - 290ms/epoch - 19ms/step\n",
            "Epoch 120/300\n",
            "15/15 - 0s - loss: 0.0527 - 300ms/epoch - 20ms/step\n",
            "Epoch 121/300\n",
            "15/15 - 0s - loss: 0.0612 - 289ms/epoch - 19ms/step\n",
            "Epoch 122/300\n",
            "15/15 - 0s - loss: 0.0827 - 304ms/epoch - 20ms/step\n",
            "Epoch 123/300\n",
            "15/15 - 0s - loss: 0.1196 - 297ms/epoch - 20ms/step\n",
            "Epoch 124/300\n",
            "15/15 - 0s - loss: 0.0941 - 297ms/epoch - 20ms/step\n",
            "Epoch 125/300\n",
            "15/15 - 0s - loss: 0.0584 - 283ms/epoch - 19ms/step\n",
            "Epoch 126/300\n",
            "15/15 - 0s - loss: 0.0557 - 287ms/epoch - 19ms/step\n",
            "Epoch 127/300\n",
            "15/15 - 0s - loss: 0.0512 - 286ms/epoch - 19ms/step\n",
            "Epoch 128/300\n",
            "15/15 - 0s - loss: 0.0461 - 287ms/epoch - 19ms/step\n",
            "Epoch 129/300\n",
            "15/15 - 0s - loss: 0.0382 - 287ms/epoch - 19ms/step\n",
            "Epoch 130/300\n",
            "15/15 - 0s - loss: 0.0387 - 284ms/epoch - 19ms/step\n",
            "Epoch 131/300\n",
            "15/15 - 0s - loss: 0.1184 - 283ms/epoch - 19ms/step\n",
            "Epoch 132/300\n",
            "15/15 - 0s - loss: 0.2193 - 287ms/epoch - 19ms/step\n",
            "Epoch 133/300\n",
            "15/15 - 0s - loss: 0.1033 - 289ms/epoch - 19ms/step\n",
            "Epoch 134/300\n",
            "15/15 - 0s - loss: 0.0800 - 292ms/epoch - 19ms/step\n",
            "Epoch 135/300\n",
            "15/15 - 0s - loss: 0.0441 - 280ms/epoch - 19ms/step\n",
            "Epoch 136/300\n",
            "15/15 - 0s - loss: 0.0484 - 289ms/epoch - 19ms/step\n",
            "Epoch 137/300\n",
            "15/15 - 0s - loss: 0.0417 - 285ms/epoch - 19ms/step\n",
            "Epoch 138/300\n",
            "15/15 - 0s - loss: 0.0844 - 289ms/epoch - 19ms/step\n",
            "Epoch 139/300\n",
            "15/15 - 0s - loss: 0.1034 - 293ms/epoch - 20ms/step\n",
            "Epoch 140/300\n",
            "15/15 - 0s - loss: 0.1440 - 285ms/epoch - 19ms/step\n",
            "Epoch 141/300\n",
            "15/15 - 0s - loss: 0.0966 - 287ms/epoch - 19ms/step\n",
            "Epoch 142/300\n",
            "15/15 - 0s - loss: 0.0641 - 293ms/epoch - 20ms/step\n",
            "Epoch 143/300\n",
            "15/15 - 0s - loss: 0.0540 - 289ms/epoch - 19ms/step\n",
            "Epoch 144/300\n",
            "15/15 - 0s - loss: 0.0640 - 286ms/epoch - 19ms/step\n",
            "Epoch 145/300\n",
            "15/15 - 0s - loss: 0.0602 - 292ms/epoch - 19ms/step\n",
            "Epoch 146/300\n",
            "15/15 - 0s - loss: 0.0645 - 289ms/epoch - 19ms/step\n",
            "Epoch 147/300\n",
            "15/15 - 0s - loss: 0.0421 - 286ms/epoch - 19ms/step\n",
            "Epoch 148/300\n",
            "15/15 - 0s - loss: 0.0395 - 290ms/epoch - 19ms/step\n",
            "Epoch 149/300\n",
            "15/15 - 0s - loss: 0.0591 - 280ms/epoch - 19ms/step\n",
            "Epoch 150/300\n",
            "15/15 - 0s - loss: 0.0574 - 283ms/epoch - 19ms/step\n",
            "Epoch 151/300\n",
            "15/15 - 0s - loss: 0.0868 - 290ms/epoch - 19ms/step\n",
            "Epoch 152/300\n",
            "15/15 - 0s - loss: 0.0758 - 278ms/epoch - 19ms/step\n",
            "Epoch 153/300\n",
            "15/15 - 0s - loss: 0.0482 - 293ms/epoch - 20ms/step\n",
            "Epoch 154/300\n",
            "15/15 - 0s - loss: 0.0509 - 295ms/epoch - 20ms/step\n",
            "Epoch 155/300\n",
            "15/15 - 0s - loss: 0.0483 - 298ms/epoch - 20ms/step\n",
            "Epoch 156/300\n",
            "15/15 - 0s - loss: 0.0505 - 300ms/epoch - 20ms/step\n",
            "Epoch 157/300\n",
            "15/15 - 0s - loss: 0.0837 - 297ms/epoch - 20ms/step\n",
            "Epoch 158/300\n",
            "15/15 - 0s - loss: 0.0593 - 294ms/epoch - 20ms/step\n",
            "Epoch 159/300\n",
            "15/15 - 0s - loss: 0.0772 - 298ms/epoch - 20ms/step\n",
            "Epoch 160/300\n",
            "15/15 - 0s - loss: 0.0574 - 299ms/epoch - 20ms/step\n",
            "Epoch 161/300\n",
            "15/15 - 0s - loss: 0.0576 - 298ms/epoch - 20ms/step\n",
            "Epoch 162/300\n",
            "15/15 - 0s - loss: 0.0540 - 298ms/epoch - 20ms/step\n",
            "Epoch 163/300\n",
            "15/15 - 0s - loss: 0.0310 - 299ms/epoch - 20ms/step\n",
            "Epoch 164/300\n",
            "15/15 - 0s - loss: 0.0351 - 302ms/epoch - 20ms/step\n",
            "Epoch 165/300\n",
            "15/15 - 0s - loss: 0.0460 - 289ms/epoch - 19ms/step\n",
            "Epoch 166/300\n",
            "15/15 - 0s - loss: 0.0342 - 292ms/epoch - 19ms/step\n",
            "Epoch 167/300\n",
            "15/15 - 0s - loss: 0.0593 - 284ms/epoch - 19ms/step\n",
            "Epoch 168/300\n",
            "15/15 - 0s - loss: 0.1422 - 281ms/epoch - 19ms/step\n",
            "Epoch 169/300\n",
            "15/15 - 0s - loss: 0.1117 - 285ms/epoch - 19ms/step\n",
            "Epoch 170/300\n",
            "15/15 - 0s - loss: 0.0691 - 280ms/epoch - 19ms/step\n",
            "Epoch 171/300\n",
            "15/15 - 0s - loss: 0.0541 - 283ms/epoch - 19ms/step\n",
            "Epoch 172/300\n",
            "15/15 - 0s - loss: 0.0425 - 280ms/epoch - 19ms/step\n",
            "Epoch 173/300\n",
            "15/15 - 0s - loss: 0.0303 - 277ms/epoch - 18ms/step\n",
            "Epoch 174/300\n",
            "15/15 - 0s - loss: 0.0281 - 279ms/epoch - 19ms/step\n",
            "Epoch 175/300\n",
            "15/15 - 0s - loss: 0.0552 - 279ms/epoch - 19ms/step\n",
            "Epoch 176/300\n",
            "15/15 - 0s - loss: 0.1160 - 285ms/epoch - 19ms/step\n",
            "Epoch 177/300\n",
            "15/15 - 0s - loss: 0.1706 - 283ms/epoch - 19ms/step\n",
            "Epoch 178/300\n",
            "15/15 - 0s - loss: 0.0606 - 281ms/epoch - 19ms/step\n",
            "Epoch 179/300\n",
            "15/15 - 0s - loss: 0.0436 - 288ms/epoch - 19ms/step\n",
            "Epoch 180/300\n",
            "15/15 - 0s - loss: 0.0440 - 282ms/epoch - 19ms/step\n",
            "Epoch 181/300\n",
            "15/15 - 0s - loss: 0.0501 - 285ms/epoch - 19ms/step\n",
            "Epoch 182/300\n",
            "15/15 - 0s - loss: 0.1071 - 291ms/epoch - 19ms/step\n",
            "Epoch 183/300\n",
            "15/15 - 0s - loss: 0.0759 - 290ms/epoch - 19ms/step\n",
            "Epoch 184/300\n",
            "15/15 - 0s - loss: 0.0464 - 285ms/epoch - 19ms/step\n",
            "Epoch 185/300\n",
            "15/15 - 0s - loss: 0.0895 - 290ms/epoch - 19ms/step\n",
            "Epoch 186/300\n",
            "15/15 - 0s - loss: 0.0650 - 286ms/epoch - 19ms/step\n",
            "Epoch 187/300\n",
            "15/15 - 0s - loss: 0.0649 - 286ms/epoch - 19ms/step\n",
            "Epoch 188/300\n",
            "15/15 - 0s - loss: 0.1302 - 286ms/epoch - 19ms/step\n",
            "Epoch 189/300\n",
            "15/15 - 0s - loss: 0.1220 - 284ms/epoch - 19ms/step\n",
            "Epoch 190/300\n",
            "15/15 - 0s - loss: 0.0780 - 284ms/epoch - 19ms/step\n",
            "Epoch 191/300\n",
            "15/15 - 0s - loss: 0.0851 - 284ms/epoch - 19ms/step\n",
            "Epoch 192/300\n",
            "15/15 - 0s - loss: 0.0543 - 287ms/epoch - 19ms/step\n",
            "Epoch 193/300\n",
            "15/15 - 0s - loss: 0.0355 - 289ms/epoch - 19ms/step\n",
            "Epoch 194/300\n",
            "15/15 - 0s - loss: 0.0624 - 280ms/epoch - 19ms/step\n",
            "Epoch 195/300\n",
            "15/15 - 0s - loss: 0.0481 - 291ms/epoch - 19ms/step\n",
            "Epoch 196/300\n",
            "15/15 - 0s - loss: 0.0487 - 287ms/epoch - 19ms/step\n",
            "Epoch 197/300\n",
            "15/15 - 0s - loss: 0.0491 - 295ms/epoch - 20ms/step\n",
            "Epoch 198/300\n",
            "15/15 - 0s - loss: 0.0713 - 290ms/epoch - 19ms/step\n",
            "Epoch 199/300\n",
            "15/15 - 0s - loss: 0.0669 - 286ms/epoch - 19ms/step\n",
            "Epoch 200/300\n",
            "15/15 - 0s - loss: 0.0625 - 295ms/epoch - 20ms/step\n",
            "Epoch 201/300\n",
            "15/15 - 0s - loss: 0.0365 - 296ms/epoch - 20ms/step\n",
            "Epoch 202/300\n",
            "15/15 - 0s - loss: 0.0646 - 293ms/epoch - 20ms/step\n",
            "Epoch 203/300\n",
            "15/15 - 0s - loss: 0.0686 - 291ms/epoch - 19ms/step\n",
            "Epoch 204/300\n",
            "15/15 - 0s - loss: 0.0648 - 298ms/epoch - 20ms/step\n",
            "Epoch 205/300\n",
            "15/15 - 0s - loss: 0.1377 - 291ms/epoch - 19ms/step\n",
            "Epoch 206/300\n",
            "15/15 - 0s - loss: 0.0949 - 292ms/epoch - 19ms/step\n",
            "Epoch 207/300\n",
            "15/15 - 0s - loss: 0.0954 - 286ms/epoch - 19ms/step\n",
            "Epoch 208/300\n",
            "15/15 - 0s - loss: 0.0399 - 287ms/epoch - 19ms/step\n",
            "Epoch 209/300\n",
            "15/15 - 0s - loss: 0.0525 - 283ms/epoch - 19ms/step\n",
            "Epoch 210/300\n",
            "15/15 - 0s - loss: 0.0757 - 280ms/epoch - 19ms/step\n",
            "Epoch 211/300\n",
            "15/15 - 0s - loss: 0.0738 - 294ms/epoch - 20ms/step\n",
            "Epoch 212/300\n",
            "15/15 - 0s - loss: 0.0620 - 289ms/epoch - 19ms/step\n",
            "Epoch 213/300\n",
            "15/15 - 0s - loss: 0.0568 - 282ms/epoch - 19ms/step\n",
            "Epoch 214/300\n",
            "15/15 - 0s - loss: 0.0524 - 286ms/epoch - 19ms/step\n",
            "Epoch 215/300\n",
            "15/15 - 0s - loss: 0.0318 - 286ms/epoch - 19ms/step\n",
            "Epoch 216/300\n",
            "15/15 - 0s - loss: 0.0388 - 295ms/epoch - 20ms/step\n",
            "Epoch 217/300\n",
            "15/15 - 0s - loss: 0.0523 - 284ms/epoch - 19ms/step\n",
            "Epoch 218/300\n",
            "15/15 - 0s - loss: 0.0611 - 289ms/epoch - 19ms/step\n",
            "Epoch 219/300\n",
            "15/15 - 0s - loss: 0.1117 - 307ms/epoch - 20ms/step\n",
            "Epoch 220/300\n",
            "15/15 - 0s - loss: 0.0994 - 295ms/epoch - 20ms/step\n",
            "Epoch 221/300\n",
            "15/15 - 0s - loss: 0.0708 - 297ms/epoch - 20ms/step\n",
            "Epoch 222/300\n",
            "15/15 - 0s - loss: 0.0455 - 289ms/epoch - 19ms/step\n",
            "Epoch 223/300\n",
            "15/15 - 0s - loss: 0.0417 - 301ms/epoch - 20ms/step\n",
            "Epoch 224/300\n",
            "15/15 - 0s - loss: 0.0601 - 289ms/epoch - 19ms/step\n",
            "Epoch 225/300\n",
            "15/15 - 0s - loss: 0.0512 - 294ms/epoch - 20ms/step\n",
            "Epoch 226/300\n",
            "15/15 - 0s - loss: 0.0931 - 294ms/epoch - 20ms/step\n",
            "Epoch 227/300\n",
            "15/15 - 0s - loss: 0.0604 - 290ms/epoch - 19ms/step\n",
            "Epoch 228/300\n",
            "15/15 - 0s - loss: 0.0617 - 291ms/epoch - 19ms/step\n",
            "Epoch 229/300\n",
            "15/15 - 0s - loss: 0.0506 - 298ms/epoch - 20ms/step\n",
            "Epoch 230/300\n",
            "15/15 - 0s - loss: 0.0495 - 290ms/epoch - 19ms/step\n",
            "Epoch 231/300\n",
            "15/15 - 0s - loss: 0.0447 - 295ms/epoch - 20ms/step\n",
            "Epoch 232/300\n",
            "15/15 - 0s - loss: 0.0442 - 303ms/epoch - 20ms/step\n",
            "Epoch 233/300\n",
            "15/15 - 0s - loss: 0.0329 - 300ms/epoch - 20ms/step\n",
            "Epoch 234/300\n",
            "15/15 - 0s - loss: 0.0312 - 297ms/epoch - 20ms/step\n",
            "Epoch 235/300\n",
            "15/15 - 0s - loss: 0.0759 - 297ms/epoch - 20ms/step\n",
            "Epoch 236/300\n",
            "15/15 - 0s - loss: 0.1056 - 305ms/epoch - 20ms/step\n",
            "Epoch 237/300\n",
            "15/15 - 0s - loss: 0.0540 - 305ms/epoch - 20ms/step\n",
            "Epoch 238/300\n",
            "15/15 - 0s - loss: 0.0377 - 300ms/epoch - 20ms/step\n",
            "Epoch 239/300\n",
            "15/15 - 0s - loss: 0.0483 - 296ms/epoch - 20ms/step\n",
            "Epoch 240/300\n",
            "15/15 - 0s - loss: 0.0954 - 289ms/epoch - 19ms/step\n",
            "Epoch 241/300\n",
            "15/15 - 0s - loss: 0.0895 - 298ms/epoch - 20ms/step\n",
            "Epoch 242/300\n",
            "15/15 - 0s - loss: 0.0821 - 293ms/epoch - 20ms/step\n",
            "Epoch 243/300\n",
            "15/15 - 0s - loss: 0.0581 - 292ms/epoch - 19ms/step\n",
            "Epoch 244/300\n",
            "15/15 - 0s - loss: 0.0743 - 294ms/epoch - 20ms/step\n",
            "Epoch 245/300\n",
            "15/15 - 0s - loss: 0.0516 - 292ms/epoch - 19ms/step\n",
            "Epoch 246/300\n",
            "15/15 - 0s - loss: 0.0540 - 290ms/epoch - 19ms/step\n",
            "Epoch 247/300\n",
            "15/15 - 0s - loss: 0.0376 - 305ms/epoch - 20ms/step\n",
            "Epoch 248/300\n",
            "15/15 - 0s - loss: 0.0447 - 283ms/epoch - 19ms/step\n",
            "Epoch 249/300\n",
            "15/15 - 0s - loss: 0.0557 - 293ms/epoch - 20ms/step\n",
            "Epoch 250/300\n",
            "15/15 - 0s - loss: 0.0444 - 289ms/epoch - 19ms/step\n",
            "Epoch 251/300\n",
            "15/15 - 0s - loss: 0.0494 - 297ms/epoch - 20ms/step\n",
            "Epoch 252/300\n",
            "15/15 - 0s - loss: 0.0826 - 303ms/epoch - 20ms/step\n",
            "Epoch 253/300\n",
            "15/15 - 0s - loss: 0.0460 - 291ms/epoch - 19ms/step\n",
            "Epoch 254/300\n",
            "15/15 - 0s - loss: 0.0829 - 296ms/epoch - 20ms/step\n",
            "Epoch 255/300\n",
            "15/15 - 0s - loss: 0.0457 - 293ms/epoch - 20ms/step\n",
            "Epoch 256/300\n",
            "15/15 - 0s - loss: 0.0652 - 296ms/epoch - 20ms/step\n",
            "Epoch 257/300\n",
            "15/15 - 0s - loss: 0.0710 - 296ms/epoch - 20ms/step\n",
            "Epoch 258/300\n",
            "15/15 - 0s - loss: 0.0344 - 294ms/epoch - 20ms/step\n",
            "Epoch 259/300\n",
            "15/15 - 0s - loss: 0.0418 - 285ms/epoch - 19ms/step\n",
            "Epoch 260/300\n",
            "15/15 - 0s - loss: 0.0568 - 289ms/epoch - 19ms/step\n",
            "Epoch 261/300\n",
            "15/15 - 0s - loss: 0.0909 - 288ms/epoch - 19ms/step\n",
            "Epoch 262/300\n",
            "15/15 - 0s - loss: 0.0600 - 292ms/epoch - 19ms/step\n",
            "Epoch 263/300\n",
            "15/15 - 0s - loss: 0.0505 - 289ms/epoch - 19ms/step\n",
            "Epoch 264/300\n",
            "15/15 - 0s - loss: 0.0527 - 297ms/epoch - 20ms/step\n",
            "Epoch 265/300\n",
            "15/15 - 0s - loss: 0.0423 - 293ms/epoch - 20ms/step\n",
            "Epoch 266/300\n",
            "15/15 - 0s - loss: 0.0548 - 292ms/epoch - 19ms/step\n",
            "Epoch 267/300\n",
            "15/15 - 0s - loss: 0.1042 - 293ms/epoch - 20ms/step\n",
            "Epoch 268/300\n",
            "15/15 - 0s - loss: 0.0643 - 291ms/epoch - 19ms/step\n",
            "Epoch 269/300\n",
            "15/15 - 0s - loss: 0.0841 - 293ms/epoch - 20ms/step\n",
            "Epoch 270/300\n",
            "15/15 - 0s - loss: 0.0614 - 293ms/epoch - 20ms/step\n",
            "Epoch 271/300\n",
            "15/15 - 0s - loss: 0.0340 - 294ms/epoch - 20ms/step\n",
            "Epoch 272/300\n",
            "15/15 - 0s - loss: 0.0561 - 289ms/epoch - 19ms/step\n",
            "Epoch 273/300\n",
            "15/15 - 0s - loss: 0.0368 - 296ms/epoch - 20ms/step\n",
            "Epoch 274/300\n",
            "15/15 - 0s - loss: 0.0487 - 284ms/epoch - 19ms/step\n",
            "Epoch 275/300\n",
            "15/15 - 0s - loss: 0.0377 - 281ms/epoch - 19ms/step\n",
            "Epoch 276/300\n",
            "15/15 - 0s - loss: 0.0532 - 284ms/epoch - 19ms/step\n",
            "Epoch 277/300\n",
            "15/15 - 0s - loss: 0.0520 - 284ms/epoch - 19ms/step\n",
            "Epoch 278/300\n",
            "15/15 - 0s - loss: 0.0957 - 284ms/epoch - 19ms/step\n",
            "Epoch 279/300\n",
            "15/15 - 0s - loss: 0.0571 - 283ms/epoch - 19ms/step\n",
            "Epoch 280/300\n",
            "15/15 - 0s - loss: 0.0473 - 282ms/epoch - 19ms/step\n",
            "Epoch 281/300\n",
            "15/15 - 0s - loss: 0.0634 - 283ms/epoch - 19ms/step\n",
            "Epoch 282/300\n",
            "15/15 - 0s - loss: 0.0489 - 296ms/epoch - 20ms/step\n",
            "Epoch 283/300\n",
            "15/15 - 0s - loss: 0.0429 - 291ms/epoch - 19ms/step\n",
            "Epoch 284/300\n",
            "15/15 - 0s - loss: 0.0366 - 282ms/epoch - 19ms/step\n",
            "Epoch 285/300\n",
            "15/15 - 0s - loss: 0.0308 - 281ms/epoch - 19ms/step\n",
            "Epoch 286/300\n",
            "15/15 - 0s - loss: 0.0716 - 284ms/epoch - 19ms/step\n",
            "Epoch 287/300\n",
            "15/15 - 0s - loss: 0.0925 - 289ms/epoch - 19ms/step\n",
            "Epoch 288/300\n",
            "15/15 - 0s - loss: 0.0655 - 292ms/epoch - 19ms/step\n",
            "Epoch 289/300\n",
            "15/15 - 0s - loss: 0.0760 - 285ms/epoch - 19ms/step\n",
            "Epoch 290/300\n",
            "15/15 - 0s - loss: 0.0438 - 285ms/epoch - 19ms/step\n",
            "Epoch 291/300\n",
            "15/15 - 0s - loss: 0.0802 - 288ms/epoch - 19ms/step\n",
            "Epoch 292/300\n",
            "15/15 - 0s - loss: 0.0586 - 287ms/epoch - 19ms/step\n",
            "Epoch 293/300\n",
            "15/15 - 0s - loss: 0.0364 - 287ms/epoch - 19ms/step\n",
            "Epoch 294/300\n",
            "15/15 - 0s - loss: 0.0408 - 286ms/epoch - 19ms/step\n",
            "Epoch 295/300\n",
            "15/15 - 0s - loss: 0.0338 - 291ms/epoch - 19ms/step\n",
            "Epoch 296/300\n",
            "15/15 - 0s - loss: 0.0410 - 298ms/epoch - 20ms/step\n",
            "Epoch 297/300\n",
            "15/15 - 0s - loss: 0.1183 - 288ms/epoch - 19ms/step\n",
            "Epoch 298/300\n",
            "15/15 - 0s - loss: 0.0903 - 284ms/epoch - 19ms/step\n",
            "Epoch 299/300\n",
            "15/15 - 0s - loss: 0.0890 - 289ms/epoch - 19ms/step\n",
            "Epoch 300/300\n",
            "15/15 - 0s - loss: 0.0443 - 286ms/epoch - 19ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<keras.src.callbacks.History at 0x79502419e350>"
            ]
          },
          "metadata": {},
          "execution_count": 62
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "n-aNP4n3sqG_",
        "outputId": "3774b052-4448-473c-c51a-358145b6fb35",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 443
        }
      },
      "source": [
        "# Plotting code, feel free to ignore.\n",
        "h = 1.0\n",
        "x_min, x_max = X[:, 0].min() - 5, X[:, 0].max() + 5\n",
        "y_min, y_max = X[:, 1].min() - 5, X[:, 1].max() + 5\n",
        "xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n",
        "                     np.arange(y_min, y_max, h))\n",
        "\n",
        "# here \"model\" is your model's prediction (classification) function\n",
        "Z = tn_model.predict(np.c_[xx.ravel(), yy.ravel()])\n",
        "\n",
        "# Put the result into a color plot\n",
        "Z = Z.reshape(xx.shape)\n",
        "plt.contourf(xx, yy, Z)\n",
        "plt.axis('off')\n",
        "\n",
        "# Plot also the training points\n",
        "plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)"
      ],
      "execution_count": 63,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "7/7 [==============================] - 0s 6ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.collections.PathCollection at 0x7950245af7f0>"
            ]
          },
          "metadata": {},
          "execution_count": 63
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since end of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "s_ukr55OORqE",
        "outputId": "4fc6ab25-1827-4f0d-c2ad-7cb3f179ce49"
      },
      "execution_count": 64,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since end of run: 1712721210.5733175\n",
            "Wed Apr 10 03:53:30 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since beginning of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "o8HTyvcHchzQ",
        "outputId": "d08a6b1b-4491-4fdf-ea33-2c0682cef886"
      },
      "execution_count": 65,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since beginning of run: 1712721210.578469\n",
            "Wed Apr 10 03:53:30 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# Function to compute saliency map\n",
        "@tf.function\n",
        "def compute_saliency(input_image):\n",
        "    with tf.GradientTape() as tape:\n",
        "        tape.watch(input_image)\n",
        "        predictions = tn_model(input_image)\n",
        "    grads = tape.gradient(predictions, input_image)\n",
        "    saliency_map = tf.reduce_max(tf.abs(grads), axis=-1)\n",
        "    return saliency_map\n",
        "\n",
        "# Function to compute saliency map using Gradient\n",
        "@tf.function\n",
        "def compute_gradient_saliency(input_image):\n",
        "    with tf.GradientTape() as tape:\n",
        "        tape.watch(input_image)\n",
        "        predictions = tn_model(input_image)\n",
        "    grads = tape.gradient(predictions, input_image)\n",
        "    saliency_map = tf.reduce_max(tf.abs(grads), axis=-1)\n",
        "    return saliency_map\n",
        "\n",
        "# Compute saliency map for the entire grid\n",
        "def compute_saliency_map_grid():\n",
        "    xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))\n",
        "    input_image = np.c_[xx.ravel(), yy.ravel()]\n",
        "    saliency_map = compute_saliency(tf.constant(input_image, dtype=tf.float32)).numpy()\n",
        "    saliency_map = saliency_map.reshape(xx.shape)\n",
        "    return xx, yy, saliency_map\n",
        "\n",
        "# Compute and plot saliency map for the entire grid\n",
        "xx, yy, saliency_map = compute_saliency_map_grid()\n",
        "\n",
        "# Compute saliency maps for all data points\n",
        "def compute_saliency_maps():\n",
        "    saliency_maps = []\n",
        "    for data_point in X:\n",
        "        saliency_map = compute_gradient_saliency(tf.constant(data_point[None, :], dtype=tf.float32)).numpy()\n",
        "        saliency_maps.append(saliency_map)\n",
        "    return saliency_maps\n",
        "\n",
        "# Find the indices of the data points with the highest saliency values\n",
        "def find_top_indices(saliency_maps, top_k):\n",
        "    top_indices = np.argsort(np.max(saliency_maps, axis=1))[-top_k:]\n",
        "    return top_indices\n",
        "\n",
        "def plot_most_diagnostic(top_indices, top_k, normalized_saliency_values):\n",
        "    plt.figure(figsize=(8, 6))\n",
        "    plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)\n",
        "    plt.scatter(X[top_indices, 0], X[top_indices, 1], marker='o', s=200, facecolors='none', edgecolors='r', linewidths=2)\n",
        "    for i, index in enumerate(top_indices):\n",
        "        plt.annotate(f'{normalized_saliency_values.iloc[index][\"Saliency\"]:.4f}', (X[index, 0], X[index, 1]), xytext=(X[index, 0]+0.35, X[index, 1]+0.25), arrowprops=dict(facecolor='black', arrowstyle='->'))\n",
        "    plt.title(f'Saliency Most Diagnostic Data Points (Top {top_k})')\n",
        "    plt.xlabel('Feature 1')\n",
        "    plt.ylabel('Feature 2')\n",
        "    plt.grid(True)\n",
        "    plt.axis('equal')\n",
        "    plt.show()\n",
        "\n",
        "# Compute saliency maps for all data points\n",
        "saliency_maps = compute_saliency_maps()\n",
        "\n",
        "# Find the indices of the data points with the highest saliency values\n",
        "top_k = 5  # Number of top diagnostic data points to select\n",
        "top_indices = find_top_indices(saliency_maps, top_k)\n",
        "\n",
        "# Create a DataFrame to store the saliency values\n",
        "saliency_df = pd.DataFrame(data=saliency_maps, columns=[\"Saliency\"])\n",
        "\n",
        "# Save the saliency values to a CSV file\n",
        "saliency_df.to_csv(\"saliency_values.csv\", index=False)\n",
        "\n",
        "print(\"Saliency values saved to saliency_values.csv\")\n",
        "\n",
        "# Normalizing the saliency values\n",
        "normalized_saliency = (saliency_df - saliency_df.min()) / (saliency_df.max() - saliency_df.min())\n",
        "\n",
        "# Saving the normalized saliency values to a new CSV file\n",
        "normalized_saliency.to_csv(\"normalized_saliency_values.csv\", index=False)\n",
        "\n",
        "# Plot the most diagnostic data points\n",
        "plot_most_diagnostic(top_indices, top_k, normalized_saliency)\n",
        "\n",
        "print(\"Normalized saliency values saved to normalized_saliency_values.csv\")\n",
        "print(\"Normalized Saliency Top-k:\")\n",
        "print(normalized_saliency.nlargest(top_k, 'Saliency'))\n",
        "print(\"Normalized Saliency Max:\", normalized_saliency.max())\n",
        "print(\"Normalized Saliency Min:\", normalized_saliency.min())\n",
        "print(\"Normalized Saliency Mean:\", normalized_saliency.mean())\n",
        "print(\"Normalized Saliency Median:\", normalized_saliency.median())\n",
        "print(\"Normalized Saliency Mode:\", normalized_saliency.mode())\n",
        "sum_normalized_values = normalized_saliency.sum()\n",
        "print(\"Normalized Saliency Sum:\", sum_normalized_values)\n",
        "print(\"#\")\n",
        "print(\"#\")\n",
        "print(\"#\")\n",
        "print(\"Normalized Saliency Standard Deviation:\", normalized_saliency.std())\n",
        "print(\"Normalized Saliency Skewness:\", normalized_saliency.skew())\n",
        "print(\"Normalized Saliency Kurtosis:\", normalized_saliency.kurtosis())\n",
        "print(\"Normalized Saliency Variance:\", normalized_saliency.var())\n",
        "coefficient_variation = (normalized_saliency.std() / normalized_saliency.mean()) * 100\n",
        "print(\"Normalized Saliency Coefficient of Variation:\", coefficient_variation)\n",
        "print(\"#\")\n",
        "print(\"#\")\n",
        "print(\"#\")\n",
        "cumulative_sum = normalized_saliency.cumsum()\n",
        "print(\"Cumulative Sum of Normalized Saliency Values:\", cumulative_sum)\n",
        "mean_cumulative_sum = cumulative_sum / len(normalized_saliency)\n",
        "print(\"Mean of Cumulative Sum of Normalized Saliency Values:\", mean_cumulative_sum)\n",
        "rms = np.sqrt(np.mean(normalized_saliency**2))\n",
        "print(\"Normalized Saliency Root Mean Square:\", rms)\n",
        "q1 = normalized_saliency.quantile(0.25)\n",
        "q2 = normalized_saliency.quantile(0.75)\n",
        "iqr = q2 - q1\n",
        "print(\"Normalized Saliency 25th Percentile:\", q1)\n",
        "print(\"Normalized Saliency 75th Percentile:\", q2)\n",
        "print(\"Normalized Saliency Interquartile Range:\", iqr)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1849
        },
        "id": "95xed6YyDClf",
        "outputId": "ae23c55d-6dc3-417c-a46d-01890c704a78"
      },
      "execution_count": 66,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Saliency values saved to saliency_values.csv\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 800x600 with 1 Axes>"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAr4AAAIjCAYAAADlfxjoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAADdTUlEQVR4nOzdd3xT1fsH8M/NbEbTvXcpUPYeZSN7KYgTlCW4wAEqigMoKEO/CP4QRUUBUQRBQAUECshG9h5ltKWldO8mbeb9/VEaCG2TmzZpk/Z5v159QW7OTZ7kZjw595znMCzLsiCEEEIIIaSe49V1AIQQQgghhNQGSnwJIYQQQkiDQIkvIYQQQghpECjxJYQQQgghDQIlvoQQQgghpEGgxJcQQgghhDQIlPgSQgghhJAGgRJfQgghhBDSIFDiSwghhBBCGgRKfAmpRX369EGfPn2Ml5OSksAwDNasWVNnMRHuJkyYgPDw8LoOo1bNnTsXDMPUdRj1BsMwmDt3bl2HYeLzzz9HdHQ0DAZDXYdSLbt27YJcLkdWVlZdh0KcACW+hJhx6dIlPPXUUwgLC4OLiwuCgoIwYMAALF++vK5DcyjlyRGPx0NKSkqF6wsLCyGRSMAwDKZNm2aXGK5evYq5c+ciKSmJU/vymMv/pFIpQkNDMWLECKxevRpqtdoucToilUqFuXPn4sCBA3a9H3s+5zt37rRLQjlhwgSTmBUKBdq0aYMlS5bU+mtkwYIF2LZtm01vs7CwEIsXL8b7778PHo9X4fFW9TdhwgSbxlGZqmKJjo42aTd48GBERUVh4cKFdo+JOD9BXQdAiKM6duwY+vbti9DQUEyZMgX+/v5ISUnBf//9h6+++gpvvPFGje8jLCwMJSUlEAqFNoi47onFYvz222+YOXOmyfYtW7bY/b6vXr2K2NhY9OnTx6pe2W+//RZyuRxqtRqpqanYvXs3Jk2ahGXLlmH79u0ICQkxtv3hhx+ctlfMHJVKhdjYWAAwOSMBAB9//DE++OADm96fNc85Vzt37sSKFSvskvyKxWKsWrUKAJCfn48//vgD7777Lk6dOoUNGzZYdVslJSUQCKr31btgwQI89dRTGDlyZLX2r8xPP/0EnU6H559/HgDwyiuvoH///sbrExMTMXv2bLz88svo2bOncXujRo1sFoM5Dz/35dzc3Cq0e+WVV/Duu+8iNjYWrq6utRIbcVIsIaRSQ4cOZX18fNi8vLwK12VkZFTrNnv37s327t27ZoE5oDlz5rAA2CeffJJt27ZthesHDBjAjh49mgXATp061S4xbNq0iQXA/vvvv5zal8eclZVV4bpffvmF5fF4bJcuXWwcpWPKyspiAbBz5syx6/3Y8zmfOnUqa4+vtPHjx7Mymcxkm16vZzt27MgCYFNTU21+n1WRyWTs+PHjbXqbrVu3Zl944YUqrz916hQLgF29erVN75eLyp77qmRkZLB8Pp/98ccf7RwVcXY01IGQKty+fRstWrSAu7t7het8fX1NLq9evRqPPfYYfH19IRaL0bx5c3z77bcW76OqMb7Xr1/HU089BU9PT7i4uKBjx47466+/TNqsWbMGDMPg6NGjmDFjBnx8fCCTyTBq1KhKx7r9888/6N27N1xdXaFQKNCpUyesX78eADBnzhwIhcJK93v55Zfh7u6O0tJSi49nzJgxOH/+PK5fv27clp6ejv3792PMmDGV7pOZmYmXXnoJfn5+cHFxQZs2bbB27doK7TZs2IAOHToY42/VqhW++uor43Px9NNPAwD69u1rPCVa3VP3Y8eOxeTJk3HixAnExcUZt1c2xvd///sfunXrBi8vL0gkEnTo0AGbN2+ucJslJSV488034e3tDVdXVzz++ONITU2tMOazfDjArVu3MGHCBLi7u8PNzQ0TJ06ESqUyuU2dTof58+ejUaNGEIvFCA8Px4cffljhFPzp06cxaNAgeHt7QyKRICIiApMmTQJQ9hr08fEBAMTGxhqfu/KYqhrj+8svv6Bz586QSqXw8PBAr169sGfPHs7P8aOqes4PHz6Mp59+GqGhoRCLxQgJCcH06dNRUlJibDNhwgSsWLECAExOiZfjeoy44vF4xp7x8qE1XF/H1T3eDMNAqVRi7dq1FYYbFBUV4e2330Z4eDjEYjF8fX0xYMAAnD171uzjSExMxMWLF016eLnatGkTOnToAIlEAm9vb7zwwgtITU01aTNhwgTI5XIkJCRg0KBBkMlkCAwMxLx588CyLOf70uv1KCwsNNvG19cXrVu3xp9//mn1YyENCyW+hFQhLCwMZ86cweXLly22/fbbbxEWFoYPP/wQS5YsQUhICF5//XXjl7E1rly5gq5du+LatWv44IMPsGTJEshkMowcORJbt26t0P6NN97A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\n"
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Normalized saliency values saved to normalized_saliency_values.csv\n",
            "Normalized Saliency Top-k:\n",
            "     Saliency\n",
            "257  1.000000\n",
            "343  0.755539\n",
            "376  0.617530\n",
            "196  0.505895\n",
            "161  0.474499\n",
            "Normalized Saliency Max: Saliency    1.0\n",
            "dtype: float32\n",
            "Normalized Saliency Min: Saliency    0.0\n",
            "dtype: float32\n",
            "Normalized Saliency Mean: Saliency    0.026475\n",
            "dtype: float32\n",
            "Normalized Saliency Median: Saliency    0.00276\n",
            "dtype: float32\n",
            "Normalized Saliency Mode:    Saliency\n",
            "0  0.014306\n",
            "Normalized Saliency Sum: Saliency    12.708103\n",
            "dtype: float32\n",
            "#\n",
            "#\n",
            "#\n",
            "Normalized Saliency Standard Deviation: Saliency    0.09168\n",
            "dtype: float32\n",
            "Normalized Saliency Skewness: Saliency    6.046804\n",
            "dtype: float32\n",
            "Normalized Saliency Kurtosis: Saliency    44.164112\n",
            "dtype: float32\n",
            "Normalized Saliency Variance: Saliency    0.008405\n",
            "dtype: float32\n",
            "Normalized Saliency Coefficient of Variation: Saliency    346.285767\n",
            "dtype: float32\n",
            "#\n",
            "#\n",
            "#\n",
            "Cumulative Sum of Normalized Saliency Values:       Saliency\n",
            "0     0.000884\n",
            "1     0.001769\n",
            "2     0.002639\n",
            "3     0.003509\n",
            "4     0.004379\n",
            "..         ...\n",
            "475  12.672462\n",
            "476  12.683421\n",
            "477  12.694383\n",
            "478  12.701256\n",
            "479  12.708101\n",
            "\n",
            "[480 rows x 1 columns]\n",
            "Mean of Cumulative Sum of Normalized Saliency Values:      Saliency\n",
            "0    0.000002\n",
            "1    0.000004\n",
            "2    0.000005\n",
            "3    0.000007\n",
            "4    0.000009\n",
            "..        ...\n",
            "475  0.026401\n",
            "476  0.026424\n",
            "477  0.026447\n",
            "478  0.026461\n",
            "479  0.026475\n",
            "\n",
            "[480 rows x 1 columns]\n",
            "Normalized Saliency Root Mean Square: 0.095334314\n",
            "Normalized Saliency 25th Percentile: Saliency    0.001692\n",
            "Name: 0.25, dtype: float64\n",
            "Normalized Saliency 75th Percentile: Saliency    0.013078\n",
            "Name: 0.75, dtype: float64\n",
            "Normalized Saliency Interquartile Range: Saliency    0.011386\n",
            "dtype: float64\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since end of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "wfZCzuq9KY9b",
        "outputId": "2fa14ddd-ef0f-481c-e6bb-57540a23a153"
      },
      "execution_count": 67,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since end of run: 1712721212.4915524\n",
            "Wed Apr 10 03:53:32 2024\n"
          ]
        }
      ]
    }
  ]
}